Fujitsu Commands

Readers which support Fujitsu’s custom commands for both 64K and 8K tags report the same in the field IsFujitsuCommandSupported of ReaderCaps as true.

64K Fujitsu tag commands

This section describes the operations which can be performed on 64K Fujitsu tags.

  1. ChangeWordLock

    This method changes the word-lock flags of up to two consecutive words in the User Memory Bank of 64K Fujitsu tags. One can selectively apply lock or unlock or not apply any action on each of the two words. Thus, only the 2 LSBs of PayloadAction and PayloadMask are considered. A set action bit indicates write-lock operation, a reset bit for write-unlock operation for the corresponding Area. Only if the corresponding mask bit is set, the action specified will be applied. This operation requires the Block Group password of the containing Block Group.

    string tagId = "112233441122334411223344";

    // Change Word Lock

    Fujitsu.ChangeWordLockAccessParams changeWordLockParams = new Fujitsu.ChangeWordLockAccessParams();

    changeWordLockParams.BlockGroupPassword = 0x12345678;

    changeWordLockParams.ByteOffset = 4;

    changeWordLockParams.MemoryBank = MEMORY_BANK.MEMORY_BANK_USER;

    changeWordLockParams.PayloadAction = 0x03;

    changeWordLockParams.PayloadMask = 0x03;

     

    // single tag operation

    rfid3.Actions.TagAccess.Fujitsu.ChangeWordLockWait(tagId, changeWordLockParams, null);

     

  2. ChangeBlockLock

    This method changes the BlockLock flags of upto 16 consecutive blocks inside a block group. Setting the BlockLock flags will make the containing words to be locked after a single Write operation, while resetting it will restore normal functionality. This operation requires Block Group Password.

    string tagId = "112233441122334411223344";

    // Change Block Lock

    Fujitsu.ChangeBlockLockAccessParams changeBlockLockParams = new Fujitsu.ChangeBlockLockAccessParams();

     

    changeBlockLockParams.BlockGroupOffset = 6;

    changeBlockLockParams.BlockGroupPassword = 0x12345678;

    changeBlockLockParams.PayloadAction = 0x1234;

    changeBlockLockParams.PayloadMask = 0xf0f0;

     

    // single tag operation

    rfid3.Actions.TagAccess.Fujitsu.ChangeBlockLockWait(tagId, changeBlockLockParams, null);

     

  3. ReadBlockLock

    This method reads the status of the Block-lock flags of all the blocks inside a specified BlockGroup. Incase of a single Tag operation, the result is returned in TagData’s member Object AccessOperationResult.FujitsuReadBlockLock. In case of multiple tag operations the ReadNotify handler will be receiving the TagData objects for each tag that participated in access.

    string tagId = "112233441122334411223344";

    // Read Block Lock

    Fujitsu.ReadBlockLockAccessParams readBlockLockParams = new Fujitsu.ReadBlockLockAccessParams();

     

    readBlockLockParams.BlockGroupOffset = 6;

     

    // single tag operation

    TagData retTagData = rfid3.Actions.TagAccess.Fujitsu.ReadBlockLockWait(tagId, readBlockLockParams, null);

    if (retTagData.OpCode == ACCESS_OPERATION_CODE.ACCESS_OPERATION_FUJITSU_READ_BLOCKLOCK && retTagData.OpStatus == ACCESS_OPERATION_STATUS.ACCESS_SUCCESS)

    {

        Console.WriteLine(retTagData.AccessOperationResult.FujitsuReadBlockLockResult.BlockLockStatus);

    }

     

  4. ChangeBlockOrAreaGroupPassword

    This operation changes the specified Block or Area Group password depending on the target tag involved in the operation i.e, a 64K tag responds with a change in its Block Group password while a 8K tag responds with a change in its Area Group password, provided a valid Current password is provided. Thus, if an access Filter criteria is passed, both 64K and 8K tags participate in this operation.

    string tagId = "112233441122334411223344";

    // Change block or area group password

    Fujitsu.ChangeBlockOrAreaGroupPasswordAccessParams changeBlockOrAreaGroupPasswordParams = new Fujitsu.ChangeBlockOrAreaGroupPasswordAccessParams();

     

    changeBlockOrAreaGroupPasswordParams.BlockOrAreaGroupOffset = 0x08;

    changeBlockOrAreaGroupPasswordParams.CurrentPassword = 0x12345678;

    changeBlockOrAreaGroupPasswordParams.NewPassword = 0;

    // single tag operation

    rfid3.Actions.TagAccess.Fujitsu.ChangeBlockOrAreaGroupPasswordWait(tagId, changeBlockOrAreaGroupPasswordParams, null);

     

  5. BurstWrite

    This operation writes an even number of words into a Fujitsu tag’s memory with a single command over the air. Unlike BlockWrite, it can only write at locations with even-worded offset in the memory banks. In addition, the number of words successfully not written is also obtained from the tag itself.

    string tagId = "112233441122334411223344";

    // Burst Write

    Fujitsu.BurstWriteAccessParams burstWriteParams = new Fujitsu.BurstWriteAccessParams();

     

    byte[] burstWriteData = new byte[12] {0x91, 0x97, 0x42, 0x74, 0x23, 0x12, 0x91, 

                                          0x97, 0x42, 0x74, 0x23, 0x12 };

     

    burstWriteParams.AccessPassword = 0x12345678;

    burstWriteParams.BurstWriteData = burstWriteData;

    burstWriteParams.BurstWriteDataLength = 12;

    burstWriteParams.ByteOffset = 16;

    burstWriteParams.MemoryBank = MEMORY_BANK.MEMORY_BANK_USER;

    // single tag operation

    TagData retTagData = rfid3.Actions.TagAccess.Fujitsu.BurstWriteWait(tagId, burstWriteParams, null);

    Console.WriteLine(retTagData.AccessOperationResult.FujitsuBurstWriteResult.NumberOfBytesNotWritten);

     

  6. BurstErase

    This operation erases an even number of words in a Fujitsu tag’s memory with a single custom command over the air. Unlike Block Erase, it can only erase words starting at locations with even-worded offset in the memory. Besides, the tag itself provides information on the number of words not successfully erased.

    string tagId = "112233441122334411223344";

    // Burst Erase

    Fujitsu.BurstEraseAccessParams burstEraseParams = new Fujitsu.BurstEraseAccessParams();

    burstEraseParams.AccessPassword = 0x12345678;

    burstEraseParams.BurstEraseLength = 16;

    burstEraseParams.ByteOffset = 4;

    burstEraseParams.MemoryBank = MEMORY_BANK.MEMORY_BANK_USER;

    // single tag operation

    TagData retTagData = rfid3.Actions.TagAccess.Fujitsu.BurstEraseWait(tagId, burstEraseParams, null);

    if (retTagData.OpCode == ACCESS_OPERATION_CODE.ACCESS_OPERATION_FUJITSU_BURST_ERASE && retTagData.OpStatus == ACCESS_OPERATION_STATUS.ACCESS_SUCCESS)

    {

        Console.WriteLine(retTagData.AccessOperationResult.FujitsuBurstEraseResult.NumberOfBytesNotErased);

    }

     

8K Fujitsu tag commands

This section describes the operations which can be performed on 8K Fujitsu tags.

  1. AreaReadLock

    This operation can apply read-lock on up to 16 consecutive areas of a specified AreaGroup inside a 8K Fujitsu tags. On succeeding, the enclosing words are prevented from reading. A set action bit indicates read-lock operation, a reset bit for read-unlock operation for the corresponding Area. Only if the corresponding mask bit is set, the action specified will be applied. This operation requires the AreaGroup’s password.

    string tagId = "112233441122334411223344";

    // Area Read Lock

    Fujitsu.AreaReadLockAccessParams areaReadLockParams = new Fujitsu.AreaReadLockAccessParams();

     

    areaReadLockParams.AreaGroupOffset = 0x08;

    areaReadLockParams.AreaGroupPassword = 0x12345678;

    areaReadLockParams.PayloadAction = 0x1234;

    areaReadLockParams.PayloadMask = 0xf0f0;

    // single tag operation

    rfid3.Actions.TagAccess.Fujitsu.AreaReadLockWait(tagId, areaReadLockParams, null);

     

  2. AreaWriteLock

    This operation can apply Write-lock on up to 16 consecutive areas of a specified AreaGroup inside a 8K Fujitsu tags. On succeeding, the enclosing words are prevented from writing. This operation requires the AreaGroup’s password.

    string tagId = "112233441122334411223344";

    // Area Write Lock

    Fujitsu.AreaWriteLockAccessParams areaWriteLockParams = new Fujitsu.AreaWriteLockAccessParams();

     

    areaWriteLockParams.AreaGroupOffset = 0x08;

    areaWriteLockParams.AreaGroupPassword = 0x12345678;

    areaWriteLockParams.PayloadAction = 0x1111;

    areaWriteLockParams.PayloadMask = 0xffff;

    // single tag operation

    rfid3.Actions.TagAccess.Fujitsu.AreaWriteLockWait(tagId, areaWriteLockParams, null);

     

  3. AreaWriteLockWOPassword

    This operation can only apply Write-lock on up to 16 consecutive areas of a specified Area Group. This operation does not require the Area Group’s password. However, one cannot unlock the Write-lock flags of the areas.

    string tagId = "112233441122334411223344";

    // Area Write Lock without password

    Fujitsu.AreaWriteLockWOPasswordAccessParams areaWriteLockWOPasswordParams = new Fujitsu.AreaWriteLockWOPasswordAccessParams();

    areaWriteLockWOPasswordParams.AreaGroupOffset = 0x3;

    areaWriteLockWOPasswordParams.PayloadAction = 0xff0f;

    // single tag operation

    rfid3.Actions.TagAccess.Fujitsu.AreaWriteLockWOPasswordWait(tagId, areaWriteLockWOPasswordParams, null);